Skip to content

ci: exercise BUILD_PACMAN_CLIENT=ON in its own job - #152

Merged
frangarcj merged 8 commits into
next-staged-buildfrom
next-pacman-client-ci
Aug 23, 2026
Merged

ci: exercise BUILD_PACMAN_CLIENT=ON in its own job#152
frangarcj merged 8 commits into
next-staged-buildfrom
next-pacman-client-ci

Conversation

@frangarcj

Copy link
Copy Markdown
Contributor

autobuilds always publishes with BUILD_PACMAN_CLIENT=ON, but no job in this repository ever built that configuration, which is how #151 could merge green while its own commit message admitted the packaging would fail until the vdpm tag moved. This adds a linux-x86_64 job that turns it on, reuses stage 1's sysroot, and runs create-core-package.sh, create-bootstrap-archive.sh, validate-core-package.sh and the tests/package/test-*.sh suite against the result — with the tag now at v0.1.2, it exercises the libexec layout end to end.

Kept out of the stage-2 matrix so its extra dependencies (Meson, a Pacman built from source) never touch the ten hosts already green there.


AI tools were used in preparing this PR (Claude Sonnet 5 and Claude Fable 5, Anthropic).

autobuilds always sets it when publishing a real SDK, but every host job
in this file leaves it at the default OFF, so the published
configuration goes untested here. Add a linux-x86_64 job that turns it
on, reusing stage 1's sysroot, and runs create-core-package.sh,
create-bootstrap-archive.sh, validate-core-package.sh and the
tests/package/test-*.sh suite against the result. Kept separate from
the stage-2 matrix so its extra dependencies (Meson, a Pacman built from
source) never touch the ten hosts already green there.
@frangarcj
frangarcj force-pushed the next-pacman-client-ci branch from 498ec66 to b036a01 Compare August 23, 2026 15:22
Two assumptions from the flat design no longer hold: a toolchain
configure now requires a stage-1 SDK, and build-machine dependency
projects no longer exist to leak target flags into (everything is
imported). The test takes the stage-1 prefix from the environment (the
pacman-client job hands over the one it already unpacked), declares the
-static linker flag in its fake toolchain the way the real ones do, and
asserts it reaches the host dependencies while no *_build project
reappears. Verified end to end in an ubuntu:24.04 container against the
CI stage-1 artifact before pushing.
@frangarcj
frangarcj force-pushed the next-pacman-client-ci branch from bb0d631 to 27b0922 Compare August 23, 2026 16:30
Pushing a branch with an open pull request built the same commit twice,
one full ten-host matrix each. Grouping by the head commit cancels the
superseded twin while keeping both trigger paths.
The published cores are moving to a glibc-2.31 build base; building the
packaging-validation job in the same container proves that recipe in CI
before publication depends on it. focal needs pip for cmake and meson
(its own predate the package client's floors), and the bundle download
moves from gh to plain curl since the container ships neither.
stage1, the Linux stage-2 legs and the pacman-client job now run in the
same glibc-2.31 base the published cores are moving to, so the whole
Linux half of the matrix validates what users actually receive. The
containers ship no git, and a checkout without it silently degrades to
a tarball with no .git, which broke the revision probe at configure --
git is installed before the checkout. Stage 3 stays on the runner: its
outputs are Windows and FreeBSD binaries that no glibc floor touches,
and its build tools come from the stage-2 SDK, which runs fine there.
The revision probe passes COMMAND_ERROR_IS_FATAL, a 3.19 feature, while
the declared minimum said 3.16 -- focal's apt cmake exposed the lie.
Declare 3.19 and give the containerized stage legs the same pinned pip
cmake the pacman-client job already uses.
The workspace mount belongs to the runner uid while the container runs
as root, and focal's git carries the safe.directory backport, so every
git probe after checkout refused the repository.
A containerized job cannot drive the packaging tests: the docker CLI is
absent and a sibling container's mounts resolve against the host, not
the job container. Same answer as the musl legs: the job stays on the
runner, only the build and the toolchain contract enter ubuntu:20.04 --
which is also exactly the shape autobuilds uses to publish, so the job
validates the real thing. The revision and epoch travel in as -D values
the way autobuilds passes them, sparing the container any git probing
of the runner-owned checkout.
@frangarcj
frangarcj merged commit 2a1f7da into next-staged-build Aug 23, 2026
13 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant